package com.zmn.plat.persistence.interfaces.product;

import com.zmn.common.dto.StatusDTO;
import com.zmn.plat.model.entity.product.ServTariffProductRelation;
import com.zmn.plat.model.entity.product.ServTariffProductRelationQuery;
import com.zmn.plat.model.vo.product.relation.ServTariffProductRelationVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author tanbiao
 * @description
 * @since 2019/9/20 11:48
 * @modifier
 **/
public interface ServTariffProductRelationDAO {
    /**
     * 分页查询
     *
     * @param query 条件
     * @return
     */
    List<ServTariffProductRelation> listPageByQuery(ServTariffProductRelationQuery query);

    /**
     * 列表查询
     *
     * @param query 条件
     * @return
     */
    List<ServTariffProductRelation> listByQuery(ServTariffProductRelationQuery query);

    /**
     * 根据后台产品id查询对应的计价器产品（后台产品必须为启用状态）
     *
     * @param
     * @return
     */
    List<ServTariffProductRelationVO> listTariffProductByProductIds(@Param("productIds") List<Integer> productIds);
    /**
     * 列表查询
     *
     * @param query 条件
     * @return
     */
    List<ServTariffProductRelationVO> listByQueryFowTariff(ServTariffProductRelationQuery query);
    /**
     * 根据业务类型获取产品id
     *
     * @param bizType 条件
     * @return
     */
    List<Integer> listTarifProductIdsByBizType(@Param("bizType") Integer bizType);
    /**
     * 根据产品id查询关联关系
     *
     * @param productIds 条件
     * @return
     */
    List<ServTariffProductRelationVO> listByProductIds(@Param("productIds") List<Integer> productIds);

    /**
     * 统计
     *
     * @param query 条件
     * @return
     */
    Integer countByQuery(ServTariffProductRelationQuery query);

    /**
     * 更新
     *
     * @param query 条件
     * @return
     */
    Integer updateByKey(ServTariffProductRelation query);

    /**
     * 批量修改状态
     *
     * @param dto 条件
     * @return
     */
    Integer updateStatusBatch(StatusDTO dto);

    /**
     * 批量修改
     *
     * @param relation
     * @param updateIds
     * @return
     */
    Integer updateBatch(@Param("relation") ServTariffProductRelation relation, @Param("updateIds") List<Integer> updateIds);

    /**
     * 插入
     *
     * @param relation
     * @return
     */
    Integer insert(ServTariffProductRelation relation);

    /**
     * 批量插入
     *
     * @param relations
     * @return
     */
    Integer insertBatch(@Param("relations") List<ServTariffProductRelation> relations);

    /**
     * 批量删除
     *
     * @param ids 主键集合
     * @return
     */
    Integer deleteBatch(@Param("ids") List<Integer> ids);

    /**
     * 根据计价器产品ID删除关联关系
     *
     * @param tariffProductId
     * @return
     */
    Integer deleteByTariffProductId(@Param("tariffProductId") Integer tariffProductId);
    /**
     * 根据后台产品ID删除关联关系
     *
     * @param productId
     * @return
     */
    Integer deleteByProductId(@Param("productId") Integer productId);
}
